Refuerzo de verificacion: propiedades, escala e integracion continua - #3
Closed
Miqueas7 wants to merge 3 commits into
Closed
Refuerzo de verificacion: propiedades, escala e integracion continua#3Miqueas7 wants to merge 3 commits into
Miqueas7 wants to merge 3 commits into
Conversation
Los tests existentes son casos puntuales elegidos a mano y la red mas grande verificada tenia cinco ramales. Se agregan dos frentes: - Invariantes con Hypothesis: monotonias fisicas (mas trabajadores o mas altitud nunca reducen el caudal; mas resistencia no aumenta el caudal de esa rama), conservacion de Kirchhoff en redes generadas aleatoriamente, escalado dimensional de Atkinson, cota del redondeo de seguridad, interpolacion acotada de la curva de ventilador, determinismo y rechazo de valores no finitos. - Escala y condicionamiento: redes de mina por niveles de 50, 200 y 500 ramales, y una red con resistencias separadas doce ordenes de magnitud. Quinientos ramales convergen en decimas de segundo con balance exacto. El invariante de red sin ventilador se expresa como cota en funcion de la tolerancia pedida: el solver converge cuando la correccion de malla cae por debajo del umbral, de modo que el caudal residual escala con el.
El flujo existente solo construye ruedas al etiquetar una version: las pruebas nunca se ejecutaban de forma automatica. Se agrega un flujo que corre en cada propuesta de cambio: - ctest en Linux, macOS y Windows, en Debug y en Release por separado (la optimizacion puede alterar el comportamiento en coma flotante y varias pruebas verifican fronteras normativas exactas). - AddressSanitizer y UndefinedBehaviorSanitizer en Linux, unico lugar donde se detecta comportamiento indefinido. - Cobertura de lineas y ramas del nucleo con umbral minimo. - Suite de Python contra la extension compilada en las tres plataformas, incluidas las pruebas de escala y una comprobacion de la interfaz de linea de comandos.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refuerzo de verificacion sobre la rama de la version 0.2.0. Tres frentes que hasta ahora no existian.
Pruebas basadas en propiedades
Los tests actuales son casos puntuales elegidos a mano. Aqui se declaran invariantes que deben cumplirse para cualquier entrada del dominio fisico y se deja que Hypothesis busque contraejemplos: monotonias (mas trabajadores o mas altitud nunca reducen el caudal; subir la resistencia de una rama no aumenta su caudal), conservacion de Kirchhoff en redes generadas al azar, escalado dimensional de Atkinson (R proporcional a la longitud, inversa al cubo del area), cota del redondeo de seguridad, interpolacion acotada de la curva de ventilador, determinismo y rechazo de valores no finitos.
Escala y condicionamiento
Redes de mina por niveles de 50, 200 y 500 ramales, mas una red con resistencias separadas doce ordenes de magnitud. Resultado: 500 ramales convergen en decimas de segundo con balance exacto en todos los nodos.
Integracion continua
El flujo existente solo construye ruedas al etiquetar una version: las pruebas nunca corrian de forma automatica. Se agrega un flujo que en cada propuesta de cambio ejecuta:
ctesten Linux, macOS y Windows, en Debug y Release por separado (la optimizacion puede alterar el comportamiento en coma flotante, y varias pruebas verifican fronteras normativas exactas).Nota
El primer invariante ejecutado descubrio un defecto real (una resistencia infinita se aceptaba y el balance devolvia caudales invalidos marcados como convergidos). La correccion se llevo a la rama de la version 0.2.0 para que no salga con ese hueco; aqui quedan las pruebas que lo detectan.